// const obj = {
//     name: "ww",
//     age:20
// }
// const data = function(x,y){
//    return x + y
// }
// console.log(data(1,2));



//用箭头函数------------------------------------------------------------
// //用=>可以省略function
// const data = (x,y)=>{
//     return x + y
//  }
//  console.log(data(1,2));

// //当形参只有一个参数的时候，就可以省略()
// const data1 = x => {
//     return x + 2
// }
// console.log(data1(1));


// //当执行体只有一行代码的时候可以省略{} 并且顺带着是return一起省略掉
// const data2 = (x) => x + 2 
// console.log(data2(1));


// //当实参只有一行代码 并且 执行体只有一行代码的时候 可以省略(){}并且顺带着return一起省略掉
// const data3 = x => x + 2 
// console.log(data3(1));


//箭头函数的this指向
//  const name = "ww"
// const obj = ({
//     name:"heimei",
//     sayHi:function(){
//           console.log(this.name); // 此时打印的heimei 此时的this指向的obj
//           setTimeout(function(){;
//               console.log(this.name);// 定时器里面的this指向window 又因为外面的name是用const申明的所以 不可以在赋值
//           },200)
//           setTimeout(() => {
//             console.log(this.name) // 箭头函数中this指向外围，所以还是obj
//           },200)
//     }
// })
// obj.sayHi()

//用箭头函数结束------------------------------------------------------------------  




// 解构------------------------------------------------------------------------------
//对象的解构
// let obj1 = {
//     name:"ls",
//     age : 20
// }
 
// let{name,age} = obj1 //相当于 let name = obj1.name
// console.log(name,age);

// let{name:a,age:b}=obj1
// console.log(a,b);

// let{name:c}= obj1
// c = "ww"
// console.log(c);


//数组的解构
// const arr = [1,2,3,4,5]
// // let[a]= arr
// // console.log(a);

// // let[a,b,c,d,e] = arr
// // console.log(a,b,c,d,e);


//交换两个变量值
// let a = 1;
// let b = 2;
// [b,a] = [1,2];//左边是解构 右边是数组
// console.log(a,b);



//数组去重
// const arr = [1,1,1,2,3]
// let newArr = Array.from(new Set(arr))  // array.from把伪数组变成真数组


//解压数组
// let a1 = [1,2,3]
// let a2 = [5,...a1]
// console.log(a2);


//合并对象
// const obj = {
//     name:"aa",
//     age:20,
// }
// const objj={sex:"男",...obj}
// console.log(objj);


// 函数形参...rest  接收的是一个数组，是实参的值，放进rest数组里。而函数里的arguments是伪数组
// function data(...rest){
//     // console.log(a);
//     // console.log(b);
//     console.log(rest);
     
// }
// data(1,2,3,4)



// 模板字符串
// let name = "ls";
// let age = 22;
// console.log(`I'm ${name},my age is${age}`);


//定义对象中属性和方法的新方式
const fn = () => {
    console.log("打印一下"); 
}
fn()

const obj3 = {
    ff:fn
}
obj3.ff();

